import pygame
import sys
from alien_invasion import *
from settings import Settings

##print("pygame version:", pygame.version.ver)
##print("pygame file:", pygame.__file__)
##print("has set_caption:", hasattr(pygame.display, "set_caption"))



print('\n12-1:')
##12-1 蓝色天空：创建一个背景为蓝色的Pygame窗口。
##settings = Settings()
##settings.bg_color = (0,0,255)
# run_game()

##12-2 游戏角色：找一幅你喜欢的游戏角色位图图像或将一幅图像转换为位图。创建一个类，
##将该角色绘制到屏幕中央，
##        并将该图像的背景色设置为屏幕背景色，或将屏幕背景色设置为该图像的背景色。

print('\n12-2:')
##from game_character import *
##def test_run_game():
##    pygame.init()
##    character_setting = GameCharacterSettings()
##    screen = pygame.display.set_mode((character_setting.screen_width,character_setting.screen_height))
##    pygame.display.set_caption('12-2 游戏角色')
##
##    game_character = GameCharacter(screen)
##    # 游戏主循环
##    running = True
##    while running:
##        for event in pygame.event.get():
##            if event.type == pygame.QUIT:
##                running = False
##        # 填充背景色
##        screen.fill(character_setting.bg_color)
##        # 绘制角色
##        game_character.blitme()
##        # 刷新屏幕
##        pygame.display.flip()
##    pygame.quit()
##    sys.exit()
##test_run_game()

print('\n12-3:火箭移动')
##12-3 火箭：编写一个游戏，开始时屏幕中央有一个火箭，而玩家可使用四个方向键上下左右移动火箭。请务必确保火箭不会移到屏幕外面。
##import pygame
##import sys
##import os
##
##def test_my_game():
##    pygame.init()
##    screen = pygame.display.set_mode((1200,800))
##    pygame.display.set_caption('12-3 火箭移动')
##
##    # 加载图像
##    ship_path = os.path.join(os.path.dirname(__file__),'images','ship.bmp')
##    print('ship_path路径:',ship_path)
##    ship_image = pygame.image.load(ship_path)
##    ship_rect = ship_image.get_rect()
##    screen_rect = screen.get_rect()
##    # 图像放屏幕中心
##    ship_rect.center = screen_rect.center
##
##    speed = 5
##    # 游戏主循环
##    while True:
##        for event in pygame.event.get():
##            if event.type == pygame.QUIT:
##                pygame.quit()
##                sys.exit()
##
##        # 每一帧检测键盘状态
##        keys = pygame.key.get_pressed()
##        if keys[pygame.K_RIGHT] and ship_rect.right < screen_rect.right:
##            ship_rect.x += speed
##        if keys[pygame.K_LEFT] and ship_rect.left > 0:
##            ship_rect.x -= speed
##        if keys[pygame.K_UP] and ship_rect.top > 0:
##            ship_rect.y -= speed
##        if keys[pygame.K_DOWN] and ship_rect.bottom < screen_rect.bottom:
##            ship_rect.y += speed
##            
##        screen.fill((230,230,230))
##        screen.blit(ship_image,ship_rect)
##        pygame.display.flip()
##    
##test_my_game()

print('\n12-4:按键事件测试')
##12-4 按键：创建一个程序，显示一个空屏幕。在事件循环中，每当检测到pygame.KEYDOWN事件时都打印属性event.key。
##运行这个程序，并按各种键，看看Pygame如何响应。
##import pygame
##import sys
##
##def test_event_key():
##    pygame.init()
##    screen = pygame.display.set_mode((1200,800))
##    pygame.display.set_caption("12-4 按键事件测试")
##    
##    while True:
##        for event in pygame.event.get():
##            if event.type == pygame.QUIT:
##                pygame.quit()
##                sys.exit()
##
##            if event.type == pygame.KEYDOWN:
##                key_name = pygame.key.name(event.key)
##                print("KEYDOWN 事件，按键值 event.key =" + str(event.key) + ", 对应的按键名称: " + key_name)
##                
##            if event.type == pygame.KEYUP:
##                key_name = pygame.key.name(event.key)
##                print("KEYUP 事件，按键值 event.key =" + str(event.key) + ", 对应的按键名称: " + key_name)
##
##test_event_key()

print('\n12-5:子弹射击')
##12-5 侧面射击：编写一个游戏，将一艘飞船放在屏幕左边，并允许玩家上下移动飞船。在玩家按空格键时，
##让飞船发射一颗在屏幕中向右穿行的子弹，并在子弹离开屏幕而消失后将其删除。
##import pygame
##import sys
##import os
##from pygame.sprite import Group
##
##def test_bullet_short():
##    pygame.init()
##    screen = pygame.display.set_mode((1200,800))
##    pygame.display.set_caption('12-5 子弹射击')
##
##    # 加载图像
##    ship_path = os.path.join(os.path.dirname(__file__),'images','ship2.bmp')
##    print('ship_path路径:',ship_path)
##    ship_image = pygame.image.load(ship_path)
##    ship_rect = ship_image.get_rect()
##    screen_rect = screen.get_rect()
##    
##    # 图像放屏幕左中
##    ship_rect.centery = screen_rect.centery
##    ship_rect.left = screen_rect.left
##    speed = 1.5
##
##    # 创建一个用于存储子弹的编组
##    bullets = Group()
##    # 游戏主循环
##    while True:
##        for event in pygame.event.get():
##            if event.type == pygame.QUIT:
##                pygame.quit()
##                sys.exit()
##                
##            if event.type == pygame.KEYDOWN:
##                if event.key == pygame.K_SPACE:
##                    # 发射子弹
##                    new_bullet = Bullet(screen,ship_rect.centery,ship_rect.left)
##                    bullets.add(new_bullet)
##
##        # 每一帧检测键盘状态
##        keys = pygame.key.get_pressed()
##        if keys[pygame.K_RIGHT] and ship_rect.right < screen_rect.right:
##            ship_rect.x += speed
##        if keys[pygame.K_LEFT] and ship_rect.left > 0:
##            ship_rect.x -= speed
##        if keys[pygame.K_UP] and ship_rect.top > 0:
##            ship_rect.y -= speed
##        if keys[pygame.K_DOWN] and ship_rect.bottom < screen_rect.bottom:
##            ship_rect.y += speed
##            
##        bullets.update()
##        for b in bullets.copy():
##            if b.rect.left > screen_rect.right:
##                bullets.remove(b)
####        print('剩余子弹数:',len(bullets))
##        screen.fill((230,230,230))
##        for bullet in bullets.sprites():
##            bullet.draw_bullet()
##        screen.blit(ship_image,ship_rect)
##        pygame.display.flip()
##
##class Bullet(pygame.sprite.Sprite):
##    def __init__(self,screen,ship_centery,ship_left):
##        super().__init__()
##        self.screen = screen
##        self.rect = pygame.Rect(0,0,6,2)
##        self.rect.centery = ship_centery
##        self.rect.left = ship_left
##
##        # 存储小数表示子弹位置
##        self.x = float(self.rect.x)
##        self.color = 50,50,50
##        
##    def update(self):
##        self.x += 2
##        self.rect.x = self.x
##
##    def draw_bullet(self):
##        pygame.draw.rect(self.screen,self.color,self.rect)
##        
##test_bullet_short()








